在Power BI中建立柏拉圖分析(Pareto Chart)目標就是"擒賊先擒王"、"抓蛇打七吋",運用80/20原則,先把問題的現象(symptom)、狀況或原因加以層別分類。
方法最初來自義大利的經濟學家Pareto所設計出來的,用來分析問題並歸納要因的影響度,所以就被稱為柏拉圖。
它的理論其實也很簡單,就是永遠只找出影響較大的前三項要因,或是80%的主要因,然後集中火力,針對這些主要因對症下藥,這樣不但可以節省資源,也可以馬上見到成效;否則如果一開始就用亂槍打鳥的方式,對所有的要因都採取措施改善,反而可能因為火力不夠集中,至可能成效不彰,甚至還可能造成浪費。
假使我們意欲:依產品類別,分別建立各個產品的銷售利潤,找出累積利潤超過總利潤的前n%產品。以政府資料開放平台「農產品交易行情」資料為例來自 https://data.gov.tw/dataset/8066
首先建立計算資料行,擺放由小到大累積的資料行紀錄值。在Products資料表內加入各類別,依據各項產品利潤由大到小累計的計算資料行IncrementalProfit
Incrementalproft = CALCULATE(
SUM(Products[Totalprofit]),
ALLEXCEPT(Products, 'Products'[Category] ),
Products[TotalProfit]>=EARLIER(Products[TotalProfit])
(
這裡使用Earlier函數用來累計利潤大於等於當下的利潤值,Earlier函數提供巢狀資料列語境的前n個語境中的資料值,函數定義:
Earlier(資料行,[前n個語境])
接著以累積的值除上銷售利潤的總值已得到占比百分率。
運用Divide函數自動處理零運算,可以避免除法運算式,但需要先測試分母值,如果Divide函數沒有傳入第三個參數,像是指定分母為零,或是分母為空白要回傳的結果,這時遇到除以零的時候,函數會回傳空白;如果有替代參數傳入,則不會回傳blank而是會回傳該參數值。
IncrementalPct = DIVIDE(
Products[IncrementalProfit],
CALCULATE (
SUM(Products[TotalProfit]),
ALLEXCEPT(Products, Products[Category] )
))